import '../../../utils/util.dart';
import '../refresh/tab_refresh/controller.dart';
import 'index.dart';

abstract class CasstleController<S extends CasstleState>
    extends ITabRefreshController<S> {
  late final controller = createController();

  /// 在 widget 内存中分配后立即调用。
  @override
  void onInit() {
    super.onInit();
  }

  @override
  Future<void> onTabRefresh() async {
    await super.onTabRefresh();
    updateBody();
  }

  void updateHeader() {
    controller.update([state.updateHeaderId]);
  }

  // void updateTitle() {
  //   controller.update([state.updateTitleId + (state.title ?? '')]);
  // }

  // void updateTabbar() {
  //   controller.update([state.updateTabbarId]);
  // }

  CasstleController createController();

  /// 在 onInit() 之后调用 1 帧。这是进入的理想场所
  @override
  void onReady() {
    super.onReady();
    update();
  }

  /// 在 [onDelete] 方法之前调用。
  @override
  void onClose() {
    super.onClose();
  }

  /// dispose 释放内存
  @override
  void dispose() {
    super.dispose();
  }

  @override
  S createState();

  @override
  Future<NetBaseReponse> onRequest({int? current});
}
